//
// metadisassembler_arm.h
//
// Definitions for the MSEC Debugging Extensions Meta-Disassembler for arm Processors
//
//
// Developed by the Microsoft Security Engineering Center (MSEC)
// Copyright 2008-2013, Microsoft Corporation
//
//	Microsoft Public License (Ms-PL)
//	This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software.
//
//	Definitions
//		The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under U.S. copyright law. A "contribution" is the original software, or any additions or changes to the software. A "contributor" is any person that distributes its contribution under this license. "Licensed patents" are a contributor's patent claims that read directly on its contribution.
//	Grant of Rights
//		(A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create.
//		(B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software.
//	Conditions and Limitations
//		(A) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks. 
//		(B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically. 
//		(C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software. 
//		(D) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license. 
//		(E) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees, or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement.
//


#pragma once

#include "metadisassembler.h"

#ifdef METADISASSEMBLER_MODULE

///
// Mnemonic Prefixes for multi-word mnemonics, by processor type
PCWSTR ARM_MNEMONIC_PREFIXES[] = { NULL };

///
// arm Processor Register Sets
///
PCWSTR ARM_REGISTERS[] = {	L"r0", L"r1", L"r2", L"r3", L"r4", L"r5", L"r6", L"r7", L"r8", L"r9", L"r10", L"r11", L"r12",
							L"sp", L"lr", L"pc",
							NULL 
						};

PCWSTR ARM_REGISTERS_POP_ORDER[] = {	L"r0", L"r1", L"r2", L"r3", L"r4", L"r5", L"r6", L"r7", L"r8", L"r9", L"r10", L"r11", L"r12",
									L"sp", L"lr", L"pc",
									NULL 
								};

PCWSTR ARM_REGISTERS_PUSH_ORDER[] = {	L"pc", L"lr", L"sp",
									L"r12", L"r11", L"r10", L"r9", L"r8", L"r7", L"r6", L"r5", L"r4", L"r3", L"r2", L"r1", L"r0",
									NULL 
								};

///
// ARM Processor Register Aliases
///
//
//
// Data Structure:
//
//		The first item in each list is the controlling register, the rest of the list is the cross-mapped registers

OPERAND ARM_REGISTER_TAINT_ALIASES[] =  {	
											OPERAND_ENTRY(AUX_FLAG), OPERAND_ENTRY(FLAGS_REGISTER), END_OPERAND_LIST,
											OPERAND_ENTRY(CARRY_FLAG), OPERAND_ENTRY(FLAGS_REGISTER), END_OPERAND_LIST,
											OPERAND_ENTRY(OVERFLOW_FLAG), OPERAND_ENTRY(FLAGS_REGISTER), END_OPERAND_LIST,
											OPERAND_ENTRY(PARITY_FLAG), OPERAND_ENTRY(FLAGS_REGISTER), END_OPERAND_LIST,
											OPERAND_ENTRY(SIGN_FLAG), OPERAND_ENTRY(FLAGS_REGISTER), END_OPERAND_LIST,
											OPERAND_ENTRY(ZERO_FLAG), OPERAND_ENTRY(FLAGS_REGISTER), END_OPERAND_LIST,
											END_OPERAND_LIST 
										};

OPERAND ARM_REGISTER_CLEAR_ALIASES[] =  {
											OPERAND_ENTRY(FLAGS_REGISTER), OPERAND_ENTRY(AUX_FLAG), OPERAND_ENTRY(CARRY_FLAG), OPERAND_ENTRY(OVERFLOW_FLAG), OPERAND_ENTRY(PARITY_FLAG), OPERAND_ENTRY(SIGN_FLAG), OPERAND_ENTRY(ZERO_FLAG), END_OPERAND_LIST,
											END_OPERAND_LIST 
										};

///
// Instruction Analysis Tables
//
// Important Note: These tables use the syntactic sugar definitions that make the code more reasable. These are only
// for readability, the definitions are entirely order dependent
//
// For ARM instructions, because the conditional execution flags apply to all instructions (or are within an IT block
// in Thumb mode), and because of the flag setting/not-setting option for most instructions ( the S suffix), rather than
// include multiple versions of each instruction, there is an algorithmic analysis of the menmonic done during parsing.
//
// Because of this, ARM/THUMB mnemonics must be complete, up until the conditional or flag indicator would be applied, so that the
// analysis function can check for that functionality
//
// Additional Note: This is known to be an incomplete list of the instruction set
INSTRUCTION_INFO ARM_DISASSEMBLY_INFO[] = 
{
	BEGIN_FIRST_INSTRUCTION
		MNEMONIC( L"__debugbreak" )
		INSTRUCTION_CLASSIFICATION INTERRUPT
		OPERAND_ENCODING NO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"adc" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		IMPLICIT_SOURCE_REGISTERS OPERAND_ENTRY(CARRY_FLAG), END_OPERAND_LIST
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"add" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"adr" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		IMPLICIT_SOURCE_REGISTERS OPERAND_ENTRY(L"pc"), END_OPERAND_LIST
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"and" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"asr" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"blx" )
		INSTRUCTION_CLASSIFICATION BRANCH
		OPERAND_ENCODING SOURCE_OPERANDS_ONLY
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		IMPLICIT_PASSED_OR_RETURNED_REGISTERS OPERAND_ENTRY(STACK_CONTENTS), OPERAND_ENTRY(L"r0"), OPERAND_ENTRY(L"r1"), OPERAND_ENTRY(L"r2"), OPERAND_ENTRY(L"r3"), OPERAND_ENTRY(L"lr"), END_OPERAND_LIST
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"bl" )
		INSTRUCTION_CLASSIFICATION BRANCH
		OPERAND_ENCODING SOURCE_OPERANDS_ONLY
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		IMPLICIT_PASSED_OR_RETURNED_REGISTERS OPERAND_ENTRY(STACK_CONTENTS), OPERAND_ENTRY(L"r0"), OPERAND_ENTRY(L"r1"), OPERAND_ENTRY(L"r2"), OPERAND_ENTRY(L"r3"), OPERAND_ENTRY(L"lr"), END_OPERAND_LIST
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"bxj" )
		INSTRUCTION_CLASSIFICATION BRANCH
		OPERAND_ENCODING SOURCE_OPERANDS_ONLY
		ANALYSIS_FUNCTIONS  ARMImplicitReturnAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"bx" )
		INSTRUCTION_CLASSIFICATION BRANCH
		OPERAND_ENCODING SOURCE_OPERANDS_ONLY
		ANALYSIS_FUNCTIONS  ARMImplicitReturnAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"bfc" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"bfi" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"bic" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"bkpt" )
		INSTRUCTION_CLASSIFICATION NOOP
		OPERAND_ENCODING NO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"b" )
		INSTRUCTION_CLASSIFICATION BRANCH
		OPERAND_ENCODING SOURCE_OPERANDS_ONLY
		ANALYSIS_FUNCTIONS  ARMImplicitReturnAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"cb" )
		INSTRUCTION_CLASSIFICATION BRANCH
		OPERAND_ENCODING SOURCE_OPERANDS_ONLY
		ANALYSIS_FUNCTIONS  ARMImplicitReturnAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"clrex" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING NO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"clz" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"cmn" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		IMPLICIT_DESTINATION_REGISTERS OPERAND_ENTRY( CARRY_FLAG ), OPERAND_ENTRY( OVERFLOW_FLAG ), OPERAND_ENTRY( SIGN_FLAG ), OPERAND_ENTRY( ZERO_FLAG ), END_OPERAND_LIST
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"cmp" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		IMPLICIT_DESTINATION_REGISTERS OPERAND_ENTRY( CARRY_FLAG ), OPERAND_ENTRY( OVERFLOW_FLAG ), OPERAND_ENTRY( SIGN_FLAG ), OPERAND_ENTRY( ZERO_FLAG ), END_OPERAND_LIST
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"dbg" )
		INSTRUCTION_CLASSIFICATION NOOP
		OPERAND_ENCODING NO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"dmb" )
		INSTRUCTION_CLASSIFICATION NOOP
		OPERAND_ENCODING NO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"dsb" )
		INSTRUCTION_CLASSIFICATION NOOP
		OPERAND_ENCODING NO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"enterx" )
		INSTRUCTION_CLASSIFICATION NOOP
		OPERAND_ENCODING NO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"eor" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"isb" )
		INSTRUCTION_CLASSIFICATION NOOP
		OPERAND_ENCODING NO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"it" )
		INSTRUCTION_CLASSIFICATION NOOP
		OPERAND_ENCODING NO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"ldmia" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING DEST_POINTER | SOURCE_OPERANDS | OPERAND_ORDER_REVERSED 
		ANALYSIS_FUNCTIONS  ARMImplicitBranchAnalysisOverride, ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"ldmfd" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING DEST_POINTER | SOURCE_OPERANDS | OPERAND_ORDER_REVERSED 
		ANALYSIS_FUNCTIONS  ARMImplicitBranchAnalysisOverride, ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"ldmda" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING DEST_POINTER | SOURCE_OPERANDS | OPERAND_ORDER_REVERSED 
		ANALYSIS_FUNCTIONS  ARMImplicitBranchAnalysisOverride, ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"ldmfa" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING DEST_POINTER | SOURCE_OPERANDS | OPERAND_ORDER_REVERSED 
		ANALYSIS_FUNCTIONS  ARMImplicitBranchAnalysisOverride, ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"ldmdb" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING DEST_POINTER | SOURCE_OPERANDS | OPERAND_ORDER_REVERSED 
		ANALYSIS_FUNCTIONS  ARMImplicitBranchAnalysisOverride, ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"ldmea" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING DEST_POINTER | SOURCE_OPERANDS | OPERAND_ORDER_REVERSED 
		ANALYSIS_FUNCTIONS  ARMImplicitBranchAnalysisOverride, ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

		BEGIN_INSTRUCTION
		MNEMONIC( L"ldmib" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING DEST_POINTER | SOURCE_OPERANDS | OPERAND_ORDER_REVERSED 
		ANALYSIS_FUNCTIONS  ARMImplicitBranchAnalysisOverride, ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"ldmed" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING DEST_POINTER | SOURCE_OPERANDS | OPERAND_ORDER_REVERSED 
		ANALYSIS_FUNCTIONS  ARMImplicitBranchAnalysisOverride, ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"ldm" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING DEST_POINTER | SOURCE_OPERANDS | OPERAND_ORDER_REVERSED
		ANALYSIS_FUNCTIONS  ARMImplicitBranchAnalysisOverride, ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"ldrbt" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING SOURCE_POINTER | DEST_REGISTER
		ANALYSIS_FUNCTIONS  ARMImplicitBranchAnalysisOverride, ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"ldrb" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING SOURCE_POINTER | DEST_REGISTER
		ANALYSIS_FUNCTIONS  ARMImplicitBranchAnalysisOverride, ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"ldrd" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING SOURCE_POINTER | DEST_REGISTER | DUAL_INITIAL_OPERANDS
		ANALYSIS_FUNCTIONS  ARMImplicitBranchAnalysisOverride, ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"ldrexb" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING SOURCE_POINTER | DEST_REGISTER
		ANALYSIS_FUNCTIONS  ARMImplicitBranchAnalysisOverride, ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"ldrexd" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING SOURCE_POINTER | DEST_REGISTER | DUAL_INITIAL_OPERANDS
		ANALYSIS_FUNCTIONS  ARMImplicitBranchAnalysisOverride, ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"ldrexh" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING SOURCE_POINTER | DEST_REGISTER
		ANALYSIS_FUNCTIONS  ARMImplicitBranchAnalysisOverride, ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"ldrex" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING SOURCE_POINTER | DEST_REGISTER
		ANALYSIS_FUNCTIONS  ARMImplicitBranchAnalysisOverride, ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"ldrh" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING SOURCE_POINTER | DEST_REGISTER
		ANALYSIS_FUNCTIONS  ARMImplicitBranchAnalysisOverride, ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"ldrsbt" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING SOURCE_POINTER | DEST_REGISTER
		ANALYSIS_FUNCTIONS  ARMImplicitBranchAnalysisOverride, ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"ldrsb" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING SOURCE_POINTER | DEST_REGISTER
		ANALYSIS_FUNCTIONS  ARMImplicitBranchAnalysisOverride, ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"ldrsht" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING SOURCE_POINTER | DEST_REGISTER
		ANALYSIS_FUNCTIONS  ARMImplicitBranchAnalysisOverride, ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"ldrsh" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING SOURCE_POINTER | DEST_REGISTER
		ANALYSIS_FUNCTIONS  ARMImplicitBranchAnalysisOverride, ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"ldrt" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING SOURCE_POINTER | DEST_REGISTER
		ANALYSIS_FUNCTIONS  ARMImplicitBranchAnalysisOverride, ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"ldr" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING SOURCE_POINTER | DEST_REGISTER
		ANALYSIS_FUNCTIONS  ARMImplicitBranchAnalysisOverride, ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"leavex" )
		INSTRUCTION_CLASSIFICATION NOOP
		OPERAND_ENCODING NO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"lsl" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"lsr" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"mla" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"mls" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"movt" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING COMBO_OPERANDS
		ANALYSIS_FUNCTIONS  ARMImplicitBranchAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"mov" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING COMBO_OPERANDS
		ANALYSIS_FUNCTIONS  ARMImplicitBranchAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"mul" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"mvn" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"nop" )
		INSTRUCTION_CLASSIFICATION NOOP
		OPERAND_ENCODING NO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"orn" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"orr" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"pkh" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"pldw" )
		INSTRUCTION_CLASSIFICATION NOOP
		OPERAND_ENCODING NO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"pld" )
		INSTRUCTION_CLASSIFICATION NOOP
		OPERAND_ENCODING NO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"pli" )
		INSTRUCTION_CLASSIFICATION NOOP
		OPERAND_ENCODING NO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"pop" )
		INSTRUCTION_CLASSIFICATION STACK_POP
		OPERAND_ENCODING DEST_REGISTER
		ANALYSIS_FUNCTIONS  ARMImplicitBranchAnalysisOverride, END_FUNCTION_LIST
		IMPLICIT_SOURCE_REGISTERS OPERAND_ENTRY( L"sp" ), END_OPERAND_LIST
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"push" )
		INSTRUCTION_CLASSIFICATION STACK_PUSH
		OPERAND_ENCODING SOURCE_REGISTER
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		IMPLICIT_DESTINATION_POINTER_REGISTERS OPERAND_ENTRY( L"sp" ), END_OPERAND_LIST
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"qadd16" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"qadd8" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"qadd" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"qasx" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"qdadd" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"qdsub" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"qsax" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"qsub16" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"qsub8" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"qsub" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"rbit" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"rev16" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"revsh" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"rev" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"rfe" )
		INSTRUCTION_CLASSIFICATION RETURN
		OPERAND_ENCODING NO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"ror" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"rrx" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"rsb" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"rsc" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"sadd16" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"sadd8" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"sasx" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"sbc" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		IMPLICIT_SOURCE_REGISTERS OPERAND_ENTRY( CARRY_FLAG ), END_OPERAND_LIST
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"sbfx" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"sdiv" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"sel" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		IMPLICIT_SOURCE_REGISTERS OPERAND_ENTRY( SIGN_FLAG ), OPERAND_ENTRY( OVERFLOW_FLAG ), END_OPERAND_LIST
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"shadd16" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"shadd8" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"shasx" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"shsax" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"shsub16" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"shsub8" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"stmda" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING SOURCE_REGISTER | DEST_POINTER | OPERAND_ORDER_REVERSED
		ANALYSIS_FUNCTIONS  ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"stmed" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING SOURCE_REGISTER | DEST_POINTER | OPERAND_ORDER_REVERSED
		ANALYSIS_FUNCTIONS  ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"stmdb" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING SOURCE_REGISTER | DEST_POINTER | OPERAND_ORDER_REVERSED
		ANALYSIS_FUNCTIONS  ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"stmfd" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING SOURCE_REGISTER | DEST_POINTER | OPERAND_ORDER_REVERSED
		ANALYSIS_FUNCTIONS  ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"stmib" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING SOURCE_REGISTER | DEST_POINTER | OPERAND_ORDER_REVERSED
		ANALYSIS_FUNCTIONS  ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"stmfa" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING SOURCE_REGISTER | DEST_POINTER | OPERAND_ORDER_REVERSED
		ANALYSIS_FUNCTIONS  ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"stmia" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING SOURCE_REGISTER | DEST_POINTER | OPERAND_ORDER_REVERSED
		ANALYSIS_FUNCTIONS  ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"stmea" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING SOURCE_REGISTER | DEST_POINTER | OPERAND_ORDER_REVERSED
		ANALYSIS_FUNCTIONS  ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"stm" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING SOURCE_REGISTER | DEST_POINTER | OPERAND_ORDER_REVERSED
		ANALYSIS_FUNCTIONS  ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"strbt" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING SOURCE_REGISTER | DEST_POINTER | OPERAND_ORDER_REVERSED
		ANALYSIS_FUNCTIONS  ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"strb" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING SOURCE_REGISTER | DEST_POINTER | OPERAND_ORDER_REVERSED
		ANALYSIS_FUNCTIONS  ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"strd" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING SOURCE_REGISTER | DEST_POINTER | OPERAND_ORDER_REVERSED | DUAL_INITIAL_OPERANDS
		ANALYSIS_FUNCTIONS  ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"str" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING SOURCE_REGISTER | DEST_POINTER | OPERAND_ORDER_REVERSED
		ANALYSIS_FUNCTIONS  ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"strht" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING SOURCE_REGISTER | DEST_POINTER | OPERAND_ORDER_REVERSED
		ANALYSIS_FUNCTIONS  ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"strh" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING SOURCE_REGISTER | DEST_POINTER | OPERAND_ORDER_REVERSED
		ANALYSIS_FUNCTIONS  ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"strt" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING SOURCE_REGISTER | DEST_POINTER | OPERAND_ORDER_REVERSED
		ANALYSIS_FUNCTIONS  ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"str" )
		INSTRUCTION_CLASSIFICATION DATA_MOVE
		OPERAND_ENCODING SOURCE_REGISTER | DEST_POINTER | OPERAND_ORDER_REVERSED
		ANALYSIS_FUNCTIONS  ARMBlockMoveAnalysisOverride, END_FUNCTION_LIST
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"sub" )
		INSTRUCTION_CLASSIFICATION CALCULATION
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"svc" )
		INSTRUCTION_CLASSIFICATION BRANCH
		OPERAND_ENCODING NO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"swpb" )
		INSTRUCTION_CLASSIFICATION DATA_EXCHANGE
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION

	BEGIN_INSTRUCTION
		MNEMONIC( L"swp" )
		INSTRUCTION_CLASSIFICATION DATA_EXCHANGE
		OPERAND_ENCODING COMBO_OPERANDS
		NO_ANALYSIS_FUNCTIONS
		NO_IMPLICIT_SOURCE_REGISTERS
		NO_IMPLICIT_DESTINATION_REGISTERS
		NO_IMPLICIT_DESTINATION_POINTER_REGISTERS
		NO_IMPLICIT_PASSED_OR_RETURNED_REGISTERS
	END_INSTRUCTION



};

#endif
